home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / RTLWIN16.PAK / DVOBJ.H < prev    next >
Text File  |  1997-05-06  |  16KB  |  478 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * dvobj.h -             Data/View object definitions                                                              *
  4. *                                                                             *
  5. *               OLE Version 2.0                                               *
  6. *                                                                             *
  7. \*****************************************************************************/
  8.  
  9. /* $Copyright: 1994$ */
  10.  
  11. #if !defined( _DVOBJ_H_ )
  12. #define _DVOBJ_H_
  13. #define __DVOBJ_H
  14.  
  15. /****** DV value types ******************************************************/
  16.  
  17. //      forward type declarations
  18. #if defined(__cplusplus)
  19. interface IStorage;
  20. interface IStream;
  21. interface IAdviseSink;
  22. interface IMoniker;
  23. #else
  24. typedef interface IStorage IStorage;
  25. typedef interface IStream IStream;
  26. typedef interface IAdviseSink IAdviseSink;
  27. typedef interface IMoniker IMoniker;
  28. #endif
  29.  
  30. typedef            IStorage FAR* LPSTORAGE;
  31. typedef             IStream FAR* LPSTREAM;
  32. typedef         IAdviseSink FAR* LPADVISESINK;
  33. typedef             IMoniker FAR* LPMONIKER;
  34.  
  35.  
  36. #if !defined(_MAC)
  37. typedef WORD CLIPFORMAT;
  38. #else
  39. typedef unsigned long CLIPFORMAT;            // ResType
  40. #endif
  41. typedef  CLIPFORMAT FAR* LPCLIPFORMAT;
  42.  
  43.  
  44. // Data/View aspect; specifies the desired aspect of the object when
  45. // drawing or getting data.
  46. typedef enum tagDVASPECT
  47. {
  48.     DVASPECT_CONTENT = 1,
  49.     DVASPECT_THUMBNAIL = 2,
  50.     DVASPECT_ICON = 4,
  51.     DVASPECT_DOCPRINT = 8
  52. } DVASPECT;
  53.  
  54.  
  55. // Data/View target device; determines the device for drawing or gettting data
  56. typedef struct FARSTRUCT tagDVTARGETDEVICE
  57. {
  58.     DWORD tdSize;
  59.     WORD tdDriverNameOffset;
  60.     WORD tdDeviceNameOffset;
  61.     WORD tdPortNameOffset;
  62.     WORD tdExtDevmodeOffset;
  63.     BYTE tdData[1];
  64. } DVTARGETDEVICE;
  65.  
  66.  
  67. // Format, etc.; completely specifices the kind of data desired, including tymed
  68. typedef struct FARSTRUCT tagFORMATETC
  69. {
  70.     CLIPFORMAT          cfFormat;
  71.     DVTARGETDEVICE FAR* ptd;
  72.     DWORD               dwAspect;
  73.     LONG                lindex;
  74.     DWORD               tymed;
  75. } FORMATETC, FAR* LPFORMATETC;
  76.  
  77.  
  78. // TYpes of storage MEDiums; determines how data is stored or passed around
  79. typedef enum tagTYMED
  80. {
  81.     TYMED_HGLOBAL = 1,
  82.     TYMED_FILE = 2,
  83.     TYMED_ISTREAM = 4,
  84.     TYMED_ISTORAGE = 8,
  85.     TYMED_GDI = 16,
  86.     TYMED_MFPICT = 32,
  87.     TYMED_NULL = 0
  88. } TYMED;
  89.  
  90.  
  91. // DATA format DIRection
  92. typedef enum tagDATADIR
  93. {
  94.     DATADIR_GET = 1,
  95.     DATADIR_SET = 2,
  96. } DATADIR;
  97.  
  98.  
  99. // SToraGe MEDIUM; a block of data on a particular medium
  100. typedef struct FARSTRUCT tagSTGMEDIUM
  101. {
  102.     DWORD   tymed;
  103.     union
  104.     {
  105.         HANDLE  hGlobal;
  106.         LPSTR   lpszFileName;
  107.         IStream FAR* pstm;
  108.         IStorage FAR* pstg;
  109.     } _UNION_NAME(u);
  110.     IUnknown FAR* pUnkForRelease;
  111. } STGMEDIUM, FAR* LPSTGMEDIUM;
  112.  
  113.  
  114. // Advise Flags
  115. typedef enum tagADVF
  116. {
  117.     ADVF_NODATA = 1,
  118.     ADVF_PRIMEFIRST = 2,
  119.     ADVF_ONLYONCE = 4,
  120.     ADVF_DATAONSTOP = 64,
  121.     ADVFCACHE_NOHANDLER = 8,
  122.     ADVFCACHE_FORCEBUILTIN = 16,
  123.     ADVFCACHE_ONSAVE = 32
  124. } ADVF;
  125.  
  126.  
  127. // Stats for data; used by several enumerations and by at least one
  128. // implementation of IDataAdviseHolder; if a field is not used, it
  129. // will be NULL.
  130. typedef struct FARSTRUCT tagSTATDATA
  131. {                                   // field used by:
  132.     FORMATETC formatetc;            // EnumAdvise, EnumData (cache), EnumFormats
  133.     DWORD advf;                     // EnumAdvise, EnumData (cache)
  134.     IAdviseSink FAR* pAdvSink;      // EnumAdvise
  135.     DWORD dwConnection;             // EnumAdvise
  136. } STATDATA;
  137.  
  138. typedef  STATDATA FAR* LPSTATDATA;
  139.  
  140.  
  141.  
  142. /****** DV Interfaces ***************************************************/
  143.  
  144.  
  145. #undef  INTERFACE
  146. #define INTERFACE   IEnumFORMATETC
  147.  
  148. DECLARE_INTERFACE_(IEnumFORMATETC, IUnknown)
  149. {
  150.     // *** IUnknown methods ***
  151.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  152.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  153.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  154.  
  155.     // *** IEnumFORMATETC methods ***
  156.     STDMETHOD(Next) (THIS_ ULONG celt, FORMATETC FAR * rgelt, ULONG FAR* pceltFetched) PURE;
  157.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  158.     STDMETHOD(Reset) (THIS) PURE;
  159.     STDMETHOD(Clone) (THIS_ IEnumFORMATETC FAR* FAR* ppenum) PURE;
  160. };
  161. typedef        IEnumFORMATETC FAR* LPENUMFORMATETC;
  162.  
  163.  
  164. #undef  INTERFACE
  165. #define INTERFACE   IEnumSTATDATA
  166.  
  167. DECLARE_INTERFACE_(IEnumSTATDATA, IUnknown)
  168. {
  169.     // *** IUnknown methods ***
  170.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  171.     STDMETHOD_(ULONG, AddRef) (THIS)  PURE;
  172.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  173.  
  174.     // *** IEnumSTATDATA methods ***
  175.     STDMETHOD(Next) (THIS_ ULONG celt, STATDATA FAR * rgelt, ULONG FAR* pceltFetched) PURE;
  176.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  177.     STDMETHOD(Reset) (THIS) PURE;
  178.     STDMETHOD(Clone) (THIS_ IEnumSTATDATA FAR* FAR* ppenum) PURE;
  179. };
  180. typedef        IEnumSTATDATA FAR* LPENUMSTATDATA;
  181.  
  182.  
  183.  
  184. #undef  INTERFACE
  185. #define INTERFACE   IDataObject
  186.  
  187. #define DATA_E_FORMATETC        DV_E_FORMATETC
  188. #define DATA_S_SAMEFORMATETC    (DATA_S_FIRST + 0)
  189.  
  190. DECLARE_INTERFACE_(IDataObject, IUnknown)
  191. {
  192.     // *** IUnknown methods ***
  193.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  194.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  195.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  196.  
  197.     // *** IDataObject methods ***
  198.     STDMETHOD(GetData) (THIS_ LPFORMATETC pformatetcIn,
  199.                             LPSTGMEDIUM pmedium ) PURE;
  200.     STDMETHOD(GetDataHere) (THIS_ LPFORMATETC pformatetc,
  201.                             LPSTGMEDIUM pmedium ) PURE;
  202.     STDMETHOD(QueryGetData) (THIS_ LPFORMATETC pformatetc ) PURE;
  203.     STDMETHOD(GetCanonicalFormatEtc) (THIS_ LPFORMATETC pformatetc,
  204.                             LPFORMATETC pformatetcOut) PURE;
  205.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  206.                             BOOL fRelease) PURE;
  207.     STDMETHOD(EnumFormatEtc) (THIS_ DWORD dwDirection,
  208.                             LPENUMFORMATETC FAR* ppenumFormatEtc) PURE;
  209.  
  210.     STDMETHOD(DAdvise) (THIS_ FORMATETC FAR* pFormatetc, DWORD advf,
  211.                     LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE;
  212.     STDMETHOD(DUnadvise) (THIS_ DWORD dwConnection) PURE;
  213.     STDMETHOD(EnumDAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  214. };
  215. typedef      IDataObject FAR* LPDATAOBJECT;
  216.  
  217.  
  218.  
  219. #undef  INTERFACE
  220. #define INTERFACE   IViewObject
  221.  
  222. #define VIEW_E_DRAW             (VIEW_E_FIRST)
  223. #define E_DRAW                  VIEW_E_DRAW
  224.  
  225. #define VIEW_S_ALREADY_FROZEN   (VIEW_S_FIRST)
  226.  
  227. DECLARE_INTERFACE_(IViewObject, IUnknown)
  228. {
  229.     // *** IUnknown methods ***
  230.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  231.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  232.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  233.  
  234.     // *** IViewObject methods ***
  235.     STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex,
  236.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  237.                     HDC hicTargetDev,
  238.                     HDC hdcDraw,
  239.                     LPCRECTL lprcBounds,
  240.                     LPCRECTL lprcWBounds,
  241.                     BOOL (CALLBACK * pfnContinue) (DWORD),
  242.                     DWORD dwContinue) PURE;
  243.  
  244.     STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex,
  245.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  246.                     HDC hicTargetDev,
  247.                     LPLOGPALETTE FAR* ppColorSet) PURE;
  248.  
  249.     STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex,
  250.                     void FAR* pvAspect,
  251.                     DWORD FAR* pdwFreeze) PURE;
  252.     STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE;
  253.     STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf,
  254.                     LPADVISESINK pAdvSink) PURE;
  255.     STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf,
  256.                     LPADVISESINK FAR* ppAdvSink) PURE;
  257. };
  258. typedef      IViewObject FAR* LPVIEWOBJECT;
  259.  
  260.  
  261. #undef  INTERFACE
  262. #define INTERFACE   IViewObject2
  263.  
  264. DECLARE_INTERFACE_(IViewObject2, IViewObject)
  265. {
  266.     // *** IUnknown methods ***
  267.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  268.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  269.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  270.  
  271.     // *** IViewObject methods ***
  272.     STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex,
  273.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  274.                     HDC hicTargetDev,
  275.                     HDC hdcDraw,
  276.                     LPCRECTL lprcBounds,
  277.                     LPCRECTL lprcWBounds,
  278.                     BOOL (CALLBACK * pfnContinue) (DWORD),
  279.                     DWORD dwContinue) PURE;
  280.  
  281.     STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex,
  282.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  283.                     HDC hicTargetDev,
  284.                     LPLOGPALETTE FAR* ppColorSet) PURE;
  285.  
  286.     STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex,
  287.                     void FAR* pvAspect,
  288.                     DWORD FAR* pdwFreeze) PURE;
  289.     STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE;
  290.     STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf,
  291.                     LPADVISESINK pAdvSink) PURE;
  292.     STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf,
  293.                     LPADVISESINK FAR* ppAdvSink) PURE;
  294.  
  295.     // *** IViewObject2 methods ***
  296.     STDMETHOD(GetExtent) (THIS_ DWORD dwDrawAspect, LONG lindex,
  297.                     DVTARGETDEVICE FAR * ptd, LPSIZEL lpsizel) PURE;
  298.  
  299. };
  300. typedef      IViewObject2 FAR* LPVIEWOBJECT2;
  301.  
  302.  
  303. #undef  INTERFACE
  304. #define INTERFACE   IAdviseSink
  305.  
  306. DECLARE_INTERFACE_(IAdviseSink, IUnknown)
  307. {
  308.     // *** IUnknown methods ***
  309.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  310.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  311.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  312.  
  313.     // *** IAdviseSink methods ***
  314.     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc,
  315.                             STGMEDIUM FAR* pStgmed) PURE;
  316.     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE;
  317.     STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE;
  318.     STDMETHOD_(void,OnSave)(THIS) PURE;
  319.     STDMETHOD_(void,OnClose)(THIS) PURE;
  320. };
  321. typedef      IAdviseSink FAR* LPADVISESINK;
  322.  
  323.  
  324.  
  325. #undef  INTERFACE
  326. #define INTERFACE   IAdviseSink2
  327.  
  328. DECLARE_INTERFACE_(IAdviseSink2, IAdviseSink)
  329. {
  330.     // *** IUnknown methods ***
  331.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  332.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  333.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  334.  
  335.     // *** IAdviseSink methods ***
  336.     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc,
  337.                             STGMEDIUM FAR* pStgmed) PURE;
  338.     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE;
  339.     STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE;
  340.     STDMETHOD_(void,OnSave)(THIS) PURE;
  341.     STDMETHOD_(void,OnClose)(THIS) PURE;
  342.  
  343.     // *** IAdviseSink2 methods ***
  344.     STDMETHOD_(void,OnLinkSrcChange)(THIS_ LPMONIKER pmk) PURE;
  345. };
  346. typedef      IAdviseSink2 FAR* LPADVISESINK2;
  347.  
  348.  
  349.  
  350. #undef  INTERFACE
  351. #define INTERFACE   IDataAdviseHolder
  352.  
  353. DECLARE_INTERFACE_(IDataAdviseHolder, IUnknown)
  354. {
  355.     // *** IUnknown methods ***
  356.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  357.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  358.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  359.  
  360.     // *** IDataAdviseHolder methods ***
  361.     STDMETHOD(Advise)(THIS_ LPDATAOBJECT pDataObject, FORMATETC FAR* pFetc,
  362.             DWORD advf, LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE;
  363.     STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
  364.     STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  365.  
  366.     STDMETHOD(SendOnDataChange)(THIS_ LPDATAOBJECT pDataObject, DWORD dwReserved, DWORD advf) PURE;
  367. };
  368. typedef      IDataAdviseHolder FAR* LPDATAADVISEHOLDER;
  369.  
  370.  
  371.  
  372. #undef  INTERFACE
  373. #define INTERFACE   IOleCache
  374.  
  375. #define CACHE_E_NOCACHE_UPDATED         (CACHE_E_FIRST)
  376.  
  377. #define CACHE_S_FORMATETC_NOTSUPPORTED  (CACHE_S_FIRST)
  378. #define CACHE_S_SAMECACHE               (CACHE_S_FIRST+1)
  379. #define CACHE_S_SOMECACHES_NOTUPDATED   (CACHE_S_FIRST+2)
  380.  
  381.  
  382. DECLARE_INTERFACE_(IOleCache, IUnknown)
  383. {
  384.     // *** IUnknown methods ***
  385.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  386.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  387.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  388.  
  389.     // *** IOleCache methods ***
  390.     STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE;
  391.     STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE;
  392.     STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE;
  393.     STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE;
  394.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  395.                             BOOL fRelease) PURE;
  396. };
  397. typedef         IOleCache FAR* LPOLECACHE;
  398.  
  399.  
  400.  
  401. // Cache update Flags
  402.  
  403. #define UPDFCACHE_NODATACACHE                   0x00000001
  404. #define UPDFCACHE_ONSAVECACHE                   0x00000002
  405. #define UPDFCACHE_ONSTOPCACHE                   0x00000004
  406. #define UPDFCACHE_NORMALCACHE                   0x00000008
  407. #define UPDFCACHE_IFBLANK                       0x00000010
  408. #define UPDFCACHE_ONLYIFBLANK                   0x80000000
  409.  
  410. #define UPDFCACHE_IFBLANKORONSAVECACHE  (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE )
  411. #define UPDFCACHE_ALL                                   (~UPDFCACHE_ONLYIFBLANK)
  412. #define UPDFCACHE_ALLBUTNODATACACHE             (UPDFCACHE_ALL & ~UPDFCACHE_NODATACACHE)
  413.  
  414.  
  415. // IOleCache2::DiscardCache options
  416. typedef enum tagDISCARDCACHE
  417. {
  418.         DISCARDCACHE_SAVEIFDIRTY =      0,      // Save all dirty cache before discarding
  419.         DISCARDCACHE_NOSAVE              =      1       // Don't save dirty caches before
  420.                                                                         // discarding
  421. } DISCARDCACHE;
  422.  
  423.  
  424. #undef  INTERFACE
  425. #define INTERFACE   IOleCache2
  426.  
  427. DECLARE_INTERFACE_(IOleCache2, IOleCache)
  428. {
  429.     // *** IUnknown methods ***
  430.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  431.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  432.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  433.  
  434.     // *** IOleCache methods ***
  435.     STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE;
  436.     STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE;
  437.     STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE;
  438.     STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE;
  439.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  440.                             BOOL fRelease) PURE;
  441.  
  442.     // *** IOleCache2 methods ***
  443.     STDMETHOD(UpdateCache) (THIS_ LPDATAOBJECT pDataObject, DWORD grfUpdf,
  444.                                                         LPVOID pReserved) PURE;
  445.     STDMETHOD(DiscardCache) (THIS_ DWORD dwDiscardOptions) PURE;
  446.  
  447. };
  448. typedef      IOleCache2 FAR* LPOLECACHE2;
  449.  
  450.  
  451. #undef  INTERFACE
  452. #define INTERFACE   IOleCacheControl
  453.  
  454. DECLARE_INTERFACE_(IOleCacheControl, IUnknown)
  455. {
  456.     // *** IUnknown methods ***
  457.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  458.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  459.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  460.  
  461.     // *** IDataObject methods ***
  462.     STDMETHOD(OnRun) (THIS_ LPDATAOBJECT pDataObject) PURE;
  463.     STDMETHOD(OnStop) (THIS) PURE;
  464. };
  465. typedef      IOleCacheControl FAR* LPOLECACHECONTROL;
  466.  
  467.  
  468.  
  469. /****** DV APIs ***********************************************************/
  470.  
  471.  
  472. STDAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
  473.  
  474. STDAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid,
  475.                                         REFIID iid, LPVOID FAR* ppv);
  476.  
  477. #endif // _DVOBJ_H_
  478.